package org.jeecg.modules.online.config.service;

import org.jeecg.modules.online.config.exception.DBException;
import org.jeecg.modules.online.config.util.ColumnMeta;

import java.util.List;

public interface DbTableHandleI {
	/**
	 * 
	 * @param columnMeta
	 * @return
	 */
//	String getUpdateFieldDesc(ColumnMeta columnMeta,ColumnMeta datacolumnMeta);
	/**
	 * 
	 * @param columnMeta
	 * @return
	 */
	String getAddColumnSql(ColumnMeta columnMeta);
	/**
	 * 
	 * @param columnMeta
	 * @return
	 */
	String getReNameFieldName(ColumnMeta columnMeta);
	/**
	 * 修改字段
	 * @param cgformcolumnMeta form的自动配置信息
	 * @param datacolumnMeta   数据库表的字段信息
	 * @return
	 */
	String getUpdateColumnSql(ColumnMeta cgformcolumnMeta,ColumnMeta datacolumnMeta) throws DBException;
	/**
	 * 根据数据类型转换类类型
	 * @return
	 */
	String getMatchClassTypeByDataType(String dataType,int digits);
	/**
	 * 删除表
	 * @param tableName
	 * @return
	 */
	String dropTableSQL(String tableName);
	/**
	 * 删除字段
	 * @param fieldName
	 * @return
	 */
	String getDropColumnSql(String fieldName);
	/**
	 * 添加注释
	 *@param columnMeta
	 *@return
	 */
	String getCommentSql(ColumnMeta columnMeta);
	/**
	 * 处理特殊sql
	 * @param cgformcolumnMeta
	 * @param datacolumnMeta
	 * @return
	 */
	String getSpecialHandle(ColumnMeta cgformcolumnMeta,ColumnMeta datacolumnMeta);
	
	/**
	  *  删除索引
	 */
	String dropIndexs(String indexName,String tableName);
	
	/**
	 * 查询索引
	 * @param indexName
	 * @param tableName
	 * @return
	 */
	String countIndex(String indexName,String tableName);


	/**
	 * 修改字段返回多sql 【仅适用于 db2 hsqldb】
	 * @param meta
	 * @param config
	 * @param tableName
	 * @param sqlList
	 */
	default void handleUpdateMultiSql(ColumnMeta meta, ColumnMeta config, String tableName, List<String> sqlList){
		// 实现类中处理特殊的修改语句
	}
}
